<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Cell Objects &mdash; Python v2.6.2 documentation</title>
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '2.6.2',
        COLLAPSE_MODINDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <link rel="search" type="application/opensearchdescription+xml"
          title="Search within Python v2.6.2 documentation"
          href="../_static/opensearch.xml"/>
    <link rel="author" title="About these documents" href="../about.html" />
    <link rel="copyright" title="Copyright" href="../copyright.html" />
    <link rel="top" title="Python v2.6.2 documentation" href="../index.html" />
    <link rel="up" title="Concrete Objects Layer" href="concrete.html" />
    <link rel="next" title="Generator Objects" href="gen.html" />
    <link rel="prev" title="CObjects" href="cobject.html" />
    <link rel="shortcut icon" type="image/png" href="../_static/py.png" />
 

  </head>
  <body>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="../modindex.html" title="Global Module Index"
             accesskey="M">modules</a> |</li>
        <li class="right" >
          <a href="gen.html" title="Generator Objects"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="cobject.html" title="CObjects"
             accesskey="P">previous</a> |</li>
        <li><img src="../_static/py.png" alt=""
                 style="vertical-align: middle; margin-top: -1px"/></li>
        <li><a href="../index.html">Python v2.6.2 documentation</a> &raquo;</li>

          <li><a href="index.html" >Python/C API Reference Manual</a> &raquo;</li>
          <li><a href="concrete.html" accesskey="U">Concrete Objects Layer</a> &raquo;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="cell-objects">
<span id="id1"></span><h1>Cell Objects<a class="headerlink" href="#cell-objects" title="Permalink to this headline">¶</a></h1>
<p>&#8220;Cell&#8221; objects are used to implement variables referenced by multiple scopes.
For each such variable, a cell object is created to store the value; the local
variables of each stack frame that references the value contains a reference to
the cells from outer scopes which also use that variable.  When the value is
accessed, the value contained in the cell is used instead of the cell object
itself.  This de-referencing of the cell object requires support from the
generated byte-code; these are not automatically de-referenced when accessed.
Cell objects are not likely to be useful elsewhere.</p>
<dl class="ctype">
<dt id="PyCellObject">
<tt class="descname">PyCellObject</tt><a class="headerlink" href="#PyCellObject" title="Permalink to this definition">¶</a></dt>
<dd>The C structure used for cell objects.</dd></dl>

<dl class="cvar">
<dt id="PyCell_Type">
<a title="PyTypeObject" class="reference external" href="type.html#PyTypeObject">PyTypeObject</a> <tt class="descname">PyCell_Type</tt><a class="headerlink" href="#PyCell_Type" title="Permalink to this definition">¶</a></dt>
<dd>The type object corresponding to cell objects.</dd></dl>

<dl class="cfunction">
<dt id="PyCell_Check">
int <tt class="descname">PyCell_Check</tt><big>(</big>ob<big>)</big><a class="headerlink" href="#PyCell_Check" title="Permalink to this definition">¶</a></dt>
<dd>Return true if <em>ob</em> is a cell object; <em>ob</em> must not be <em>NULL</em>.</dd></dl>

<dl class="cfunction">
<dt id="PyCell_New">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyCell_New</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *ob</em><big>)</big><a class="headerlink" href="#PyCell_New" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Create and return a new cell object containing the value <em>ob</em>. The parameter may
be <em>NULL</em>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyCell_Get">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyCell_Get</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *cell</em><big>)</big><a class="headerlink" href="#PyCell_Get" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Return the contents of the cell <em>cell</em>.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyCell_GET">
<a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a>* <tt class="descname">PyCell_GET</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *cell</em><big>)</big><a class="headerlink" href="#PyCell_GET" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: Borrowed reference.</em><p>Return the contents of the cell <em>cell</em>, but without checking that <em>cell</em> is
non-<em>NULL</em> and a cell object.</p>
</dd></dl>

<dl class="cfunction">
<dt id="PyCell_Set">
int <tt class="descname">PyCell_Set</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *cell</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *value</em><big>)</big><a class="headerlink" href="#PyCell_Set" title="Permalink to this definition">¶</a></dt>
<dd>Set the contents of the cell object <em>cell</em> to <em>value</em>.  This releases the
reference to any current content of the cell. <em>value</em> may be <em>NULL</em>.  <em>cell</em>
must be non-<em>NULL</em>; if it is not a cell object, <tt class="docutils literal"><span class="pre">-1</span></tt> will be returned.  On
success, <tt class="docutils literal"><span class="pre">0</span></tt> will be returned.</dd></dl>

<dl class="cfunction">
<dt id="PyCell_SET">
void <tt class="descname">PyCell_SET</tt><big>(</big><a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *cell</em>, <a title="PyObject" class="reference external" href="structures.html#PyObject">PyObject</a><em> *value</em><big>)</big><a class="headerlink" href="#PyCell_SET" title="Permalink to this definition">¶</a></dt>
<dd>Sets the value of the cell object <em>cell</em> to <em>value</em>.  No reference counts are
adjusted, and no checks are made for safety; <em>cell</em> must be non-<em>NULL</em> and must
be a cell object.</dd></dl>

</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
            <h4>Previous topic</h4>
            <p class="topless"><a href="cobject.html"
                                  title="previous chapter">CObjects</a></p>
            <h4>Next topic</h4>
            <p class="topless"><a href="gen.html"
                                  title="next chapter">Generator Objects</a></p>
            <h3>This Page</h3>
            <ul class="this-page-menu">
              <li><a href="../_sources/c-api/cell.txt"
                     rel="nofollow">Show Source</a></li>
            </ul>
          <div id="searchbox" style="display: none">
            <h3>Quick search</h3>
              <form class="search" action="../search.html" method="get">
                <input type="text" name="q" size="18" />
                <input type="submit" value="Go" />
                <input type="hidden" name="check_keywords" value="yes" />
                <input type="hidden" name="area" value="default" />
              </form>
              <p class="searchtip" style="font-size: 90%">
              Enter search terms or a module, class or function name.
              </p>
          </div>
          <script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="../modindex.html" title="Global Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="gen.html" title="Generator Objects"
             >next</a> |</li>
        <li class="right" >
          <a href="cobject.html" title="CObjects"
             >previous</a> |</li>
        <li><img src="../_static/py.png" alt=""
                 style="vertical-align: middle; margin-top: -1px"/></li>
        <li><a href="../index.html">Python v2.6.2 documentation</a> &raquo;</li>

          <li><a href="index.html" >Python/C API Reference Manual</a> &raquo;</li>
          <li><a href="concrete.html" >Concrete Objects Layer</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
      &copy; <a href="../copyright.html">Copyright</a> 1990-2009, Python Software Foundation.
      Last updated on Apr 15, 2009.
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
    </div>
  </body>
</html>